package com.oasys.service;

import com.oasys.entity.dto.AllApplyInfoDto;
import com.oasys.entity.dto.ApplyDto;
import com.oasys.entity.dto.SubmitApplyDto;
import com.oasys.entity.po.ApplyTypePo;
import com.oasys.entity.po.SubmitTypePo;
import com.oasys.entity.vo.LeaveApplyVo;
import com.oasys.entity.vo.QuitVo;
import com.oasys.entity.vo.SubmitVo;
import com.oasys.utils.ResponseResult;

import java.util.List;

/**
 * @Description: TODO
 * @Author: mis_wu
 * @Date: 2022/5/17
 **/
public interface ApprovalService {

    /**
     * 离职记录查询
     * @return
     */
    List<ApplyDto> findResignApplyList();

    /**
     * 请假数据查询
     * @return
     */
    List<ApplyDto> findLeaveApplyList();

    /**
     * 获取请假类型
     * @return
     */
    ResponseResult<List<ApplyTypePo>> findApplyTypeAll();

    /**
     * 请假申请
     * @param leaveApplyVo
     * @return
     */
    ResponseResult<Boolean> leaveApply(LeaveApplyVo leaveApplyVo);

    /**
     * 离职申请
     * @param quitVo
     * @return
     */
    ResponseResult<Boolean> resignApply(QuitVo quitVo);

    /**
     * 获取报销类型
     * @return
     */
    ResponseResult<List<SubmitTypePo>> getSubmitType();

    /**
     * 报销申请
     * @param submitVo
     * @return
     */
    ResponseResult<Boolean> expenseApply(SubmitVo submitVo);

    /**
     * 获取报销数据
     * @return
     */
    ResponseResult<List<SubmitApplyDto>> findExpenseApplyList();

    /**
     * 获取所有申请信息
     * @return
     */
    ResponseResult<List<AllApplyInfoDto>> getApplyAllInfo();

    /**
     * 同意申请
     * @param applyId
     * @return
     */
    Boolean agreeApply(Long applyId);

    /**
     * 驳回
     * @param applyId id
     * @param rejectMemo memo
     * @return boolean
     */
    Boolean rejectApply(Long applyId,String rejectMemo);
}
